1. Field of the Invention
This invention relates to multimedia data processing computer systems, and more particularly to a mechanism for specifying audio and video data objects to be asynchronously processed.
2. Description of the Related Art
Multimedia computer systems often deal with digital audio or video data objects that are contained in files, each of which is a named set of records stored and processed as a unit, and which files are recorded or played under control of application software. Application programs may also define these objects in memory, for example, by synthesizing an audio waveform with an algorithm. Once defined in memory, a data object may be played by the multimedia computer under application program control in much the same manner as if it were contained in a file.
The common approach for playing data objects from memory generally involves the application program passing a pointer to the data object to be played. In cases where objects are to be played repeatedly, or are to be played in combination, the application must continuously pass pointers to data buffers through a programming interface. An example is an application program that produces a visual animation of a horse walking, accompanied by a digital audio data stream of the sound of the horse's footsteps. The following code fragment illustrates what is required for the application program to play the representative sounds of the horse's footsteps with two digital audio waveforms of "clip" and "clop" sounds:
While (horse is walking)
send buffer for "clip" sound PA1 send buffer for "clop" sound PA1 send begin loop indicator with repeat count PA1 send buffer for "clip" sound PA1 send buffer for "clop" sound PA1 send end loop indicator
endwhile Note that for the above to be accomplished, the application must call the programming interface continuously, passing pointers to the data buffers.
Some existing programming interface designs provide simple looping constructs whereby data buffers may be played repeatedly. The following code fragment illustrates passing of data buffers to a programming interface that supports looping constructs, to accomplish the previously mentioned audio playback:
This approach, however, limits the application program's control over the data stream that is being produced and offers little, if any, interactive operation by the operator. In the case of the application producing the sound of the horse's footsteps, user interaction or some other stimulus may require that the sound be altered at some point after it is initiated, i.e., at run-time. For example, the surface upon which the horse is walking may be varied, changing the sound of the footsteps. Application programs cannot readily specify different buffers to be used once the initial loop of buffers is started using this approach.
One such example of this practice is for graphics display lists, whereby an application program defines a set of graphics drawing instructions to be executed by an asynchronous graphics display list processor. However, these relate to drawing instructions and not to the processing of multimedia data.